﻿using Abp.Application.Services;
using Abp.Application.Services.Dto;
using DevM.Development.ReleaseRecords.Dto;
using DevM.Development.Resources.Dto;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;

namespace DevM.Development.ReleaseRecords
{
    public interface IReleaseRecordAppService : IApplicationService
    {
        Task<PageOutput<ReleaseRecordDto>> GetReleaseRecordList(GetReleaseRecordInput input);
        Task<ReleaseRecordDto> GetReleaseRecord(EntityDto<long> releaseRecordId);
        Task<ReleaseLogDto> GetReleaseLog(EntityDto<long> releaseLogId);
        Task<ReleaseLogDto> GetReleaseLog(EntityDto<long> releaseRecordId, EntityDto<long> environmentId);
        Task<ReleaseLogDto> Release(ReleaseInput input);
        Task<PageOutput<ReleaseLogDto>> GetReleaseLogList(GetReleaseLogInput input);
        Task<FeedbackDto> AddFeedback(AddFeedbackInput input);
        Task<FeedbackDto> UpdateFeedback(UpdateFeedbackInput input);
        Task<FeedbackDto> UpdateFeedbackStatus(UpdateFeedbackStatusInput input);
        Task<PageOutput<FeedbackDto>> GetFeedbackList(GetFeedbackListInput input);
        Task<FeedbackDto> GetFeedback(EntityDto<long> feedbackId);
        Task DeleteFeedback(EntityDto<long> feedbackId);
        Task<GetFeedbackStaticsOutput> GetFeedbackStatics(GetFeedbackStaticsInput input);
        Task<List<ResourceDto>> GetFeedbackResourcesByFeedbackId(EntityDto<long> feedbackId);
        Task DeleteFeedbackResource(EntityDto<long> feedbackResourceId);
    }
}
